package com.tiancheng.trade.authserver.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * oauth2第三方认证请求参数
 */
@Getter
@Setter
@Accessors(chain = true)
public class Oauth2AuthorizationRequestDTO {
    private Oauth2ResponseType response_type = Oauth2ResponseType.code;
    /**
     * 应用唯一标识
     */
    @NotBlank(message = "client_id can not be null")
    private String client_id;
    /**
     * 授权后重定向的回调链接地址， 请使用 urlEncode 对链接进行处理
     */
    @NotBlank(message = "redirect_uri can not be null")
    private String redirect_uri;
    /**
     * 应用授权作用域
     */
    @NotNull(message = "scope can not be null")
    private String scope;
    /**
     * 重定向后会带上state参数，开发者可以填写a-zA-Z0-9的参数值，最多128字节
     */
    private String state;


    public static enum Oauth2ResponseType {
        /**
         * 返回code
         */
        code,
        /**
         * 返回json
         */
        json;
    }
}
